﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace Unimaq.FacturaDBS_Spring.ADO
{
    public class Spring_CM_CO_Comprobante_Interfase_ADO
    {
        public int Registrar(Util.ContextoDBSpring ctx, Entidades.Spring.CM_CO_Comprobante_Interfase cmCabecera)
        {
            SqlCommand cmd = new SqlCommand("USP_CM_CO_COMPROBANTE_INSERT", ctx.GetConexion(), ctx.GetTx());
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@TIPOCOMPROBANTE", cmCabecera.TipoComprobante ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@SERIECOMPROBANTE", cmCabecera.SerieComprobante ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@NUMEROCOMPROBANTE", cmCabecera.NumeroComprobante ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@SUCURSAL", cmCabecera.Sucursal ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@CENTROCOSTO", cmCabecera.CentroCosto ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@CLASIFICADORMOVIMIENTO", cmCabecera.ClasificadorMovimiento ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@UNIDADORGANIZACIONAL", cmCabecera.UnidadOrganizacional ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@CONCEPTOGASTO", cmCabecera.ConceptoGasto ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@IDCLIENTEFACTURACION", cmCabecera.IdClienteFacturacion);
            cmd.Parameters.AddWithValue("@DOCUMENTOCLIENTE", cmCabecera.DocumentoCliente ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@NOMBRECLIENTE", cmCabecera.NombreCliente ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@DIRECCIONCLIENTE", cmCabecera.DireccionCliente ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@ESTADODOCUMENTO", cmCabecera.EstadoDocumento);
            cmd.Parameters.AddWithValue("@FECHAEMISION", cmCabecera.FechaEmision.HasValue ? cmCabecera.FechaEmision.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@TIPODOCUMENTORELACIONADO", cmCabecera.TipoDocumentoRelacionado ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@SERIEDOCUMENTORELACIONADO", cmCabecera.SerieDocumentoRelacionado ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@DOCUMENTORELACIONADO", cmCabecera.DocumentoRelacionado ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@MONEDA", cmCabecera.Moneda);
            cmd.Parameters.AddWithValue("@TIPOCAMBIO", cmCabecera.TipoCambio);
            cmd.Parameters.AddWithValue("@MONTOAFECTO", cmCabecera.MontoAfecto);
            cmd.Parameters.AddWithValue("@MONTONOAFECTO", cmCabecera.MontoNoAfecto);
            cmd.Parameters.AddWithValue("@MONTOIMPUESTOVENTAS", cmCabecera.MontoImpuestoVentas);
            cmd.Parameters.AddWithValue("@USUARIOCREACION", cmCabecera.UsuarioCreacion);
            cmd.Parameters.AddWithValue("@CODIGOINTERNO", cmCabecera.CodigoInterno);
            cmd.Parameters.AddWithValue("@PROCESOCARGA", cmCabecera.ProcesoCarga);
            cmd.Parameters.AddWithValue("@COMPANIA", cmCabecera.Compania);
            cmd.Parameters.AddWithValue("@ESTADOCARGA", cmCabecera.EstadoCarga);
            cmd.Parameters.AddWithValue("@TIPOVENTA", cmCabecera.TipoVenta);
            cmd.Parameters.AddWithValue("@ESTADO", cmCabecera.Estado);
            cmd.Parameters.AddWithValue("@FECHACARGA", cmCabecera.FechaCarga.HasValue ? cmCabecera.FechaCarga.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@USUARIORESPONSABLECARGA", cmCabecera.UsuarioResponsableCarga ?? (object)DBNull.Value);
            
            return cmd.ExecuteNonQuery();
        }
    }
}
